import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.jdom2.output.LineSeparator;

public class Colador {

	/**
	 * @param args
	 */

	public static void main(String[] args) {

		try {
			System.out.println("----------- inicio ----------------");
			System.out
					.println("Evaluando con {test*, software, agil*, quality, eval*, unit*, develop*, lean}");
			// bibInicial =
			// cargarURL("file:///D:/Development/AndroidSDK/workspace/ParserTDG/ejemploBibParaFiltro.bib");
			String[] lineasBibInicial = cargarURLAsLines("file:///D:/Development/AndroidSDK/workspace/ParserTDG/ejemploBibParaFiltro2.bib");
			ArrayList<String> articulos = new ArrayList<String>();
			int cantidad = 0;
			boolean inicio = false;
			boolean medio = false;
			for (int i = 0; i < lineasBibInicial.length; i++) {
				if (lineasBibInicial[i].startsWith("@")) {
					cantidad++;
					inicio = true;
				}
				if (inicio) {
					articulos.add("");
					inicio = false;
					medio = true;
				}
				if (medio) {
					String temp = articulos.get(articulos.size() - 1);
					temp += lineasBibInicial[i];
					articulos.set(articulos.size() - 1, temp);
				}
				if (lineasBibInicial[i].startsWith("}")) {
					medio = false;
				}
			}

			System.out.println("cantidad items: " + articulos.size());
			evaluarTitulos(articulos);
			evaluarAbstracts(articulos);

			System.out.println("------------ fin -----------------");
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	/**
	 * @param articulos
	 *            listado de articulos en el formato bib
	 */
	private static void evaluarAbstracts(ArrayList<String> articulos) {
		ArrayList<String> seleccionados = new ArrayList<String>();
		int conResumen = 0;
		int con0 = 0, con1 = 0, con2 = 0, con3 = 0, con4 = 0, con5 = 0, con6 = 0, con7 = 0;
		int conAgil = 0, conTest = 0, conSoftware = 0, conQuality = 0, conEval = 0, conUnit = 0, conDevelop = 0;
		int conTestAgil = 0, conAgilEval = 0, conTestAgilSoftware = 0, conAgilTestOEval = 0, conUnitTest = 0, conTestAgilUnit = 0;
		int nulosSoloSoftware = 0, nulosSoloSoftwareTestOEval = 0, nulosSoloSoftwareAgiloLean = 0, nulosSoloSoftwareAgilOLeanTestOEVal = 0;
		int todasLasPalabrasRepresentativa = 0;
		for (int i = 0; i < articulos.size(); i++) {
			if (articulos.get(i).contains(",abstract = {")) {
				conResumen++;
				String cadena = articulos.get(i);
				String resumen = cadena.substring(cadena
						.indexOf("abstract = {") + 12);
				resumen = resumen.substring(0, resumen.indexOf("}"));
				resumen = resumen.replaceAll("\\p{Punct}", " ");
				String copia = resumen;
				resumen = resumen.toLowerCase();
				// System.out.println(resumen);
				// ////////////////////////////////////////////////////////
				int calificacion = 0;
				if (resumen.contains("test")) {
					calificacion++;
					conTest++;
				}
				if (resumen.contains("software")) {
					calificacion++;
					conSoftware++;
				}
				if (resumen.contains("agil")) {
					calificacion++;
					conAgil++;
				}
				if (resumen.contains("quality")) {
					calificacion++;
					conQuality++;
				}
				if (resumen.contains("eval")) {
					calificacion++;
					conEval++;
				}
				if (resumen.contains("unit")) {
					calificacion++;
					conUnit++;
				}
				if (resumen.contains("develop")) {
					calificacion++;
					conDevelop++;
				}
				if (resumen.contains("lean")) {
					// calificacion++;
					// conDevelop++;
					// System.out.println("["+""+"] "+copia);
				}
				// ////////////////////////////////////////////////////////
				if (resumen.contains("agil") && resumen.contains("eval")) {
					// System.out.println("["+conTestAgile+"] "+copia);
					conAgilEval++;
				}
				if (resumen.contains("agil") && resumen.contains("test")) {
					// System.out.println("["+conTestAgile+"] "+copia);
					conTestAgil++;
				}
				if (resumen.contains("agil") && resumen.contains("test")
						&& resumen.contains("software")) {
					// System.out.println("["+conTestAgilSoftware+"] "+copia);
					conTestAgilSoftware++;
				}

				if (resumen.contains("agil")
						&& (resumen.contains("eval") || resumen
								.contains("test"))) {
					// System.out.println("["+conAgilTestOEval+"] "+copia);
					conAgilTestOEval++;
				}

				if (resumen.contains("software")
						&& (resumen.contains("eval") || resumen
								.contains("test"))) {
					// System.out.println("["+""+"] "+copia);
					// conTestAgil++;
				}

				if (resumen.contains("software")
						&& resumen.contains("agil")
						&& (resumen.contains("eval") || resumen
								.contains("test"))) {
					// System.out.println("["+""+"] "+copia);
					// conAgilTestOEval++;
				}
				if (resumen.contains("unit") && resumen.contains("test")) {
					// System.out.println("["+conUnitTest+"] "+copia);
					conUnitTest++;
				}
				if (resumen.contains("agil") && resumen.contains("unit")
						&& resumen.contains("test")) {
					// System.out.println("["+conTestAgilUnit+"] "+copia);
					conTestAgilUnit++;
				}
				if (resumen.contains("lean") && resumen.contains("software")) {
					// System.out.println("["+""+"] "+copia);
					// conTestAgilUnit++;
				}
				if (resumen.contains("lean")
						&& resumen.contains("software")
						&& (resumen.contains("test") || resumen
								.contains("eval"))) {
					// System.out.println("["+""+"] "+copia); // no hay
					// conTestAgilUnit++;
				}
				
				if (resumen.contains("software")
						&& (resumen.contains("agil") /*|| resumen.contains("lean")*/)
						&& (resumen.contains("test") || resumen.contains("eval"))
						&& (resumen.contains("unit") || resumen.contains("quality")/*|| resumen.contains("development") || resumen.contains("scrum")*/) ) {
					// TODO: revisar development** para verificar
					
					//System.out.println("[" + "" + "] " + copia);
					todasLasPalabrasRepresentativa++;
					// . seleccionado .
					seleccionados.add(articulos.get(i));
				}

				// ////////////////////////////////////////////////////////
				if (resumen.contains("software")
						&& (!resumen.contains("unit")
								&& !resumen.contains("test")
								&& !resumen.contains("eval")
								&& !resumen.contains("quality")
								&& !resumen.contains("agil") && !resumen
									.contains("lean"))) {
					nulosSoloSoftware++;
				}

				if (resumen.contains("software")
						&& (resumen.contains("test") || resumen
								.contains("eval"))
						&& (!resumen.contains("unit")
								&& !resumen.contains("quality")
								&& !resumen.contains("agil") && !resumen
									.contains("lean"))) {
					nulosSoloSoftwareTestOEval++;
				}

				if (resumen.contains("software")
						&& (resumen.contains("agil") || resumen
								.contains("lean"))
						&& (!resumen.contains("unit")
								&& !resumen.contains("quality")
								&& !resumen.contains("test") 
								&& !resumen.contains("eval"))) {
					nulosSoloSoftwareAgiloLean++;
				}
				if (resumen.contains("software")
						&& (resumen.contains("agil") || resumen
								.contains("lean"))
						&& (resumen.contains("test") || resumen
								.contains("eval"))
						&& (!resumen.contains("unit") && !resumen
								.contains("quality"))) {
					// System.out.println("["+""+"] "+copia);
					nulosSoloSoftwareAgilOLeanTestOEVal++;
				}

				// if( titulo.contains("software") && (titulo.contains("agil")
				// || titulo.contains("lean")) && (titulo.contains("test") ||
				// titulo.contains("eval"))){
				// System.out.println("["+""+"] "+copia); igual que el de arriba
				// nulosSoloSoftwareAgilOLeanTestOEVal++;
				// }

				// ////////////////////////////////////////////////////////
				if (calificacion == 0) {
					con0++;
				}
				if (calificacion == 1) {
					con1++;
				}
				if (calificacion == 2) {
					con2++;
				}
				if (calificacion == 3) {
					// System.out.println("["+con3+"] "+copia);
					con3++;
				}
				if (calificacion == 4) {
					// System.out.println("["+con4+"] "+copia);
					con4++;
				}
				if (calificacion == 5) {
					con5++;
				}
				if (calificacion == 6) {
					con6++;
				}
				if (calificacion == 7) {
					con7++;
				}
				// ////////////////////////////////////////////////////////
			}
		}
		System.out
				.println("\n=================== Evaluacion por Resumen ====================\n");
		System.out.println("cantidad sin abstract: "
				+ (articulos.size() - conResumen));
		System.out.println("------------ calificacion --------");
		System.out.println("calificados 0: " + con0);
		System.out.println("calificados 1: " + con1);
		System.out.println("calificados 2: " + con2);
		System.out.println("calificados 3: " + con3);
		System.out.println("calificados 4: " + con4);
		System.out.println("calificados 5: " + con5);
		System.out.println("calificados 6: " + con6);
		System.out.println("calificados 7: " + con6);
		System.out.println("------------ contenido -----------");
		System.out.println("test*: " + conTest);
		System.out.println("agil*: " + conAgil);
		System.out.println("software: " + conSoftware);
		System.out.println("quality: " + conQuality);
		System.out.println("eval*: " + conEval);
		System.out.println("unit*: " + conUnit);
		System.out.println("develop*: " + conDevelop);
		System.out.println("------------ combinado -----------");
		System.out.println("eval* & agil*: " + conAgilEval);
		System.out.println("test* & agil*: " + conTestAgil);
		System.out.println("test* & unit*: " + conUnitTest);
		System.out.println("agil* & (test* | eval*): " + conAgilTestOEval);
		System.out.println("test* & agil* & software: " + conTestAgilSoftware);
		System.out.println("agil* & unit* & test*: " + conTestAgilUnit);
		System.out.println("software & (agil*|lean*) & (test*|eval*) & (unit*|quality): " + todasLasPalabrasRepresentativa);	System.out.println("------- verificacion y exclusion --------");
		System.out.println("software & !*: " + nulosSoloSoftware);
		System.out.println("software & (test|eval) & !*: "
				+ nulosSoloSoftwareTestOEval); // muy relevante
		System.out.println("software & (agil|lean) & !*: "
				+ nulosSoloSoftwareAgiloLean); // relevancia media en el tema de
												// pruebas
		System.out.println("software & (agil|lean) & (test|eval) & !*: "
				+ nulosSoloSoftwareAgilOLeanTestOEVal); // poco relevante
		
		String bibConstruido = "";
		for (int i = 0; i < seleccionados.size(); i++) {
			bibConstruido += "\n" + seleccionados.get(i);
		}
		System.out.println(seleccionados.size());
		try {
			guardarArchivo(bibConstruido, "Resumen");
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	/**
	 * @param articulos
	 */
	private static void evaluarTitulos(ArrayList<String> articulos) {
		int conTitulo = 0;
		ArrayList<String> seleccionados = new ArrayList<String>();
		
		//ArrayList<String> seleccionadosTitulo = new ArrayList<String>();
		
		int con0 = 0, con1 = 0, con2 = 0, con3 = 0, con4 = 0, con5 = 0, con6 = 0, con7 = 0;
		int conAgil = 0, conTest = 0, conSoftware = 0, conQuality = 0, conEval = 0, conUnit = 0, conDevelop = 0;
		int conTestAgil = 0, conAgilEval = 0, conTestAgilSoftware = 0, conAgilTestOEval = 0, conUnitTest = 0, conTestAgilUnit = 0;
		int nulosSoloSoftware = 0, nulosSoloSoftwareTestOEval = 0, nulosSoloSoftwareAgiloLean = 0, nulosSoloSoftwareAgilOLeanTestOEVal = 0;
		int todasLasPalabrasRepresentativa = 0;
		for (int i = 0; i < articulos.size(); i++) {
			if (articulos.get(i).contains(",title = {")) {
				conTitulo++;
				String cadena = articulos.get(i);
				String titulo = cadena
						.substring(cadena.indexOf("title = {") + 9);
				titulo = titulo.substring(0, titulo.indexOf("}"));
				titulo = titulo.replaceAll("\\p{Punct}", " ");
				String copia = titulo;
				titulo = titulo.toLowerCase();
				// System.out.println(titulo);
				// ////////////////////////////////////////////////////////
				int calificacion = 0;
				if (titulo.contains("test")) {
					calificacion++;
					conTest++;
				}
				if (titulo.contains("software")) {
					calificacion++;
					conSoftware++;
				}
				if (titulo.contains("agil")) {
					calificacion++;
					conAgil++;
				}
				if (titulo.contains("quality")) {
					calificacion++;
					conQuality++;
				}
				if (titulo.contains("eval")) {
					calificacion++;
					conEval++;
				}
				if (titulo.contains("unit")) {
					calificacion++;
					conUnit++;
				}
				if (titulo.contains("develop")) {
					calificacion++;
					conDevelop++;
				}
				if (titulo.contains("lean")) {
					// calificacion++;
					// conDevelop++;
					// System.out.println("["+""+"] "+copia);
				}
				// ////////////////////////////////////////////////////////
				if (titulo.contains("agil") && titulo.contains("eval")) {
					// System.out.println("["+conTestAgile+"] "+copia);
					conAgilEval++;
				}
				if (titulo.contains("agil") && titulo.contains("test")) {
					// System.out.println("["+conTestAgile+"] "+copia);
					conTestAgil++;
				}
				if (titulo.contains("agil") && titulo.contains("test")
						&& titulo.contains("software")) {
					// System.out.println("["+conTestAgilSoftware+"] "+copia);
					conTestAgilSoftware++;
				}

				if (titulo.contains("agil")
						&& (titulo.contains("eval") || titulo.contains("test"))) {
					// System.out.println("["+conAgilTestOEval+"] "+copia);
					seleccionados.add(articulos.get(i));
					conAgilTestOEval++;
				}

				if (titulo.contains("software")
						&& (titulo.contains("eval") || titulo.contains("test"))) {
					// System.out.println("["+""+"] "+copia);
					// conTestAgil++;
				}

				if (titulo.contains("software") && titulo.contains("agil")
						&& (titulo.contains("eval") || titulo.contains("test"))) {
					// System.out.println("["+""+"] "+copia);
					// conAgilTestOEval++;					
				}
				if (titulo.contains("unit") && titulo.contains("test")) {
					// System.out.println("["+conUnitTest+"] "+copia);
					conUnitTest++;
				}
				if (titulo.contains("agil") && titulo.contains("unit")
						&& titulo.contains("test")) {
					// System.out.println("["+conTestAgilUnit+"] "+copia);
					conTestAgilUnit++;
				}
				if (titulo.contains("lean") && titulo.contains("software")) {
					// System.out.println("["+""+"] "+copia);
					// conTestAgilUnit++;
				}
				if (titulo.contains("lean") && titulo.contains("software")
						&& (titulo.contains("test") || titulo.contains("eval"))) {
					// System.out.println("["+""+"] "+copia); // no hay
					// conTestAgilUnit++;
				}
				
				if (titulo.contains("software")
						&& (titulo.contains("agil") || titulo.contains("lean"))
						&& (titulo.contains("test") || titulo.contains("eval"))
						&& (titulo.contains("unit") || titulo.contains("quality"))) {
					//System.out.println("[" + "" + "] " + copia);
					todasLasPalabrasRepresentativa++;
				}

				// ////////////////////////////////////////////////////////
				if (titulo.contains("software")
						&& (!titulo.contains("unit")
								&& !titulo.contains("test")
								&& !titulo.contains("eval")
								&& !titulo.contains("quality")
								&& !titulo.contains("agil") && !titulo
									.contains("lean"))) {
					nulosSoloSoftware++;
				}

				if (titulo.contains("software")
						&& (titulo.contains("test") || titulo.contains("eval"))
						&& (!titulo.contains("unit")
								&& !titulo.contains("quality")
								&& !titulo.contains("agil") 
								&& !titulo.contains("lean"))) {
					nulosSoloSoftwareTestOEval++;
				}

				if (titulo.contains("software")
						&& (titulo.contains("agil") || titulo.contains("lean"))
						&& (!titulo.contains("unit")
								&& !titulo.contains("quality")
								&& !titulo.contains("test") 
								&& !titulo.contains("eval"))) {
					nulosSoloSoftwareAgiloLean++;
					// . seleccionado .
					//seleccionados.add(articulos.get(i));
				}
				if (titulo.contains("software")
						&& (titulo.contains("agil") || titulo.contains("lean"))
						&& (titulo.contains("test") || titulo.contains("eval"))
						&& (!titulo.contains("unit") && !titulo
								.contains("quality"))) {
					//System.out.println("[" + "" + "] " + copia);
					nulosSoloSoftwareAgilOLeanTestOEVal++;
				}
				
				

				// if( titulo.contains("software") && (titulo.contains("agil")
				// || titulo.contains("lean")) && (titulo.contains("test") ||
				// titulo.contains("eval"))){
				// System.out.println("["+""+"] "+copia); igual que el de arriba
				// nulosSoloSoftwareAgilOLeanTestOEVal++;
				// }

				// ////////////////////////////////////////////////////////
				if (calificacion == 0) {
					con0++;
				}
				if (calificacion == 1) {
					con1++;
				}
				if (calificacion == 2) {
					con2++;
				}
				if (calificacion == 3) {
					// System.out.println("["+con3+"] "+copia);
					con3++;
				}
				if (calificacion == 4) {
					// System.out.println("["+con4+"] "+copia);
					con4++;
				}
				if (calificacion == 5) {
					con5++;
				}
				if (calificacion == 6) {
					con6++;
				}
				if (calificacion == 7) {
					con7++;
				}
				// ////////////////////////////////////////////////////////
			}
		}
		System.out
				.println("\n=================== Evaluacion por Titulos ====================\n");
		System.out.println("cantidad con titulo: " + conTitulo);
		System.out.println("------------ calificacion --------");
		System.out.println("calificados 0: " + con0);
		System.out.println("calificados 1: " + con1);
		System.out.println("calificados 2: " + con2);
		System.out.println("calificados 3: " + con3);
		System.out.println("calificados 4: " + con4);
		System.out.println("calificados 5: " + con5);
		System.out.println("calificados 6: " + con6);
		System.out.println("calificados 7: " + con6);
		System.out.println("------------ contenido -----------");
		System.out.println("test*: " + conTest);
		System.out.println("agil*: " + conAgil);
		System.out.println("software: " + conSoftware);
		System.out.println("quality: " + conQuality);
		System.out.println("eval*: " + conEval);
		System.out.println("unit*: " + conUnit);
		System.out.println("develop*: " + conDevelop);
		System.out.println("------------ combinado -----------");
		System.out.println("eval* & agil*: " + conAgilEval);
		System.out.println("test* & agil*: " + conTestAgil);
		System.out.println("test* & unit*: " + conUnitTest);
		System.out.println("agil* & (test* | eval*): " + conAgilTestOEval);
		System.out.println("test* & agil* & software: " + conTestAgilSoftware);
		System.out.println("agil* & unit* & test*: " + conTestAgilUnit);
		System.out.println("software & (agil*|lean*) & (test*|eval*) & (unit*|quality): " + todasLasPalabrasRepresentativa);
		System.out.println("------- verificacion y exclusion --------");
		System.out.println("software & !*: " + nulosSoloSoftware);
		System.out.println("software & (test|eval) & !*: "
				+ nulosSoloSoftwareTestOEval); // muy relevante
		System.out.println("software & (agil|lean) & !*: "
				+ nulosSoloSoftwareAgiloLean); // relevancia media en el tema de
												// pruebas
		System.out.println("software & (agil|lean) & (test|eval) & !*: "
				+ nulosSoloSoftwareAgilOLeanTestOEVal); // poco relevante

		String bibConstruido = "";
		for (int i = 0; i < seleccionados.size(); i++) {
			bibConstruido += "\n" + seleccionados.get(i);
		}
		System.out.println(seleccionados.size());
		try {
			guardarArchivo(bibConstruido, "Titulo");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void previo() {
		/*
		 * int[] rangos = new int[14]; for (int i = 0; i < rangos.length; i++) {
		 * rangos[i] = 0; } static String bibInicial; static String[] claves = {
		 * "test", "agile", "software", "quality", "unit", "develop" }; static
		 * int[] valorClave = { 3, 3, 1, 3, 2, 1 }; static ArrayList<String>
		 * seleccionados; bibInicial = "resumen"; int promedio = 0; int nulos =
		 * 0; int validos = 0; int sumaGlobal = 0; int maximo = 0; seleccionados
		 * = new ArrayList<String>(); System.out.println("cargado"); String[]
		 * items = bibInicial.split("@"); System.out.println("separado"); String
		 * resumen = ""; int calificacion = 0; int indexIni = 0, indexFin = 0;
		 * for (int i = 0; i < items.length; i++) { try { //
		 * System.out.println("item: " + items[i]); indexIni =
		 * items[i].indexOf("abstract = {") + 11; indexFin =
		 * items[i].indexOf("},"); if(indexIni == -1 || indexFin == -1){
		 * System.out.println( indexIni+"//"+indexFin+"// "+items[i]); } resumen
		 * = items[i].substring(indexIni,indexFin); //
		 * System.out.println("resumen: " + resumen); resumen =
		 * resumen.toLowerCase(); resumen = resumen.replaceAll("\\p{Punct}",
		 * ""); int cantGeneral = 0; String[] palabras = resumen.split(" ");
		 * int[] cants = new int[claves.length]; for (int j = 0; j <
		 * palabras.length; j++) { for (int k = 0; k < claves.length; k++) { if
		 * (palabras[j].contains(claves[k])) { cants[k]++; cantGeneral +=
		 * valorClave[k]; } } }
		 * 
		 * for (int j = 0; j < claves.length; j++) { System.out.print("" +
		 * claves[j] + " = " + cants[j] + " "); }
		 * System.out.println(" sumatoria: " + cantGeneral);
		 * 
		 * if (cantGeneral == 0) { nulos++; } else { sumaGlobal += cantGeneral;
		 * validos++; }
		 * 
		 * //////////////////////////////////////////////////////////////////////
		 * //////// //calcula el numero de items en un rango for (int j = 0; j <
		 * rangos.length; j++) { if (cantGeneral > (j*10) && cantGeneral <=
		 * (j*10)+10) { rangos[j]= rangos[j]+1; } }
		 * /////////////////////////////
		 * /////////////////////////////////////////////////
		 * 
		 * if (cantGeneral > maximo) { maximo = cantGeneral; } if (cantGeneral
		 * >= 100) { seleccionados.add("@" + items[i] + "\n"); } } catch
		 * (Exception e) { System.err.println("error en item: " + items[i] +
		 * " : " + e); } resumen = ""; }
		 * 
		 * for (int j = 0; j < rangos.length; j++) { System.out.println("--"+
		 * "["+j+"]" + rangos[j]); } promedio = sumaGlobal / validos;
		 * System.out.println("la cantidad de nulos: " + nulos);
		 * System.out.println("la cantidad de validos: " + validos);
		 * System.out.println("el promedio fue: " + promedio);
		 * System.out.println("el maximo fue: " + maximo);
		 * System.out.println("se seleccionaron " + seleccionados.size());
		 * 
		 * String bibText = ""; for (int i = 0; i < seleccionados.size(); i++) {
		 * bibText += seleccionados.get(i); } guardarArchivo(bibText);
		 */
	}

	public static void guardarArchivo(String bib, String name) throws IOException {
		File f = new File("salidaLibreriaColada"+name+".bib");
		FileWriter salida = new FileWriter(f);
		salida.write(bib);
		salida.flush();
		salida.close();
		System.out.println("Archivo Guardado -----------------");
	}

	public static String[] cargarURLAsLines(String dir) throws IOException {
		URL url = new URL(dir);
		URLConnection spoof;
		spoof = url.openConnection();
		// Spoof the connection so we look like a web browser
		spoof.setRequestProperty("User-Agent",
				"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0;    H010818)");
		BufferedReader in;
		in = new BufferedReader(new InputStreamReader(spoof.getInputStream()));
		String strLine = "";

		List<String> lineas = new ArrayList<String>();
		while ((strLine = in.readLine()) != null) {
			// finalHTML += strLine;
			lineas.add(strLine);
		}
		String[] finalHTML = new String[lineas.size()];
		in.close();
		lineas.toArray(finalHTML);
		return finalHTML;
	}

	public static String cargarURL(String dir) throws IOException, Exception {

		String strLine = "";
		String finalHTML = "";

		try {
			URL url = new URL(dir);
			// System.out.println("cargando:" + url);
			URLConnection spoof;
			spoof = url.openConnection();
			// Spoof the connection) so we look like a web browser
			spoof.setRequestProperty("User-Agent",
					"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0;    H010818)");
			BufferedReader in;
			in = new BufferedReader(new InputStreamReader(
					spoof.getInputStream()));

			while ((strLine = in.readLine()) != null) {
				finalHTML += strLine;
			}
			in.close();
		} catch (Exception e) {
			System.err.println("\nAl cargar: " + e);
			return null;
		}
		// System.out.println("saliendo....");
		return finalHTML;
	}

}
